package com.baidu.oa;

import redis.clients.jedis.Jedis;

import java.util.HashMap;
import java.util.Map;

/**
 * 论坛项目 帖子相关操作
 * hash 数据结构
 */

public class Demo02 {
    Jedis jedis = new Jedis("192.168.133.118",6379);
    /**
     * 获取帖子id
     * @return
     */
    public long getTopicId() {
        return jedis.incr("topic_id");
    }
    /**
     * 查看帖子
     * @param id
     * @return
     */
    public Map<String, String> findtopicById(long id) {
        Map<String, String> topic = jedis.hgetAll("topic::" + id);
        incrementTopicViewCount(id);
        return topic;
    }
    /**
     * 更新帖子
     */
    public void updateTopic(long id, Map<String, String> updatedTopic) {
        jedis.hmset("topic::" + id, updatedTopic);
    }
    /**
     * 增加帖子浏览次数
     * @param id
     */
    public void incrementTopicViewCount(long id) {
        jedis.hincrBy("topic::" + id, "view_count", 1);
    }
    /**
     * 发表帖子
     */
    public boolean publishTopic(long id, Map<String, String> topic) {
        if(jedis.hexists("topic::" + id, "title")) {
            return false;
        }
        //发表帖子
        jedis.hmset("topic::" + id, topic);
        return true;
    }
    public static void main(String[] args) {
        Demo02 demo02 = new Demo02();
        // 发表一篇帖子
        long id = demo02.getTopicId();
        // 构造帖子对象
        Map<String, String> topic = new HashMap<>();
        topic.put("id", String.valueOf(id));
        topic.put("title", "如何买彩票");
        topic.put("content", "1.有钱，2.会投胎");
        topic.put("author", "ztf");
        topic.put("time", "2020-08-08 10:00:00");
        //发布帖子
        demo02.publishTopic(id, topic);
        // 更新一篇帖子
        Map<String, String> updatedTopic = new HashMap<>();
        updatedTopic.put("title", "如何投胎");
        updatedTopic.put("content", "多做好事啊");
        demo02.updateTopic(id, updatedTopic);
        // 查看帖子，并且增加了帖子浏览的次数
        Map<String, String> topicMap = demo02.findtopicById(id);
        System.out.println("查看帖子的详细内容：" + topicMap);
        demo02.incrementTopicViewCount(id);

//        User user3 = new User();
//        user3.setId(123);
//        user3.setUsername("hh");
//        byte[] serialize = JDKSerializetionUtil.serialize(user3);
//        jedis.set("user3".getBytes(),serialize);
//        Object unserizlize = JDKSerializetionUtil.unserizlize(serialize);
//        System.out.println(unserizlize);
    }

}
